dojo.require('dojox.rpc.JsonRPC');

var service = new dojox.rpc.Service({
    transport: 'POST',
    envelope: 'JSON-RPC-1.0',
    target: '/ws',
    services: {
        getVersion: {
            parameters: []
        },
        addDepartamento: {
            // nome
            parameters: [{type: 'string'}]
        },
        editDepartamento: {
            // id, nome
            parameters: [{type: 'string'}, {type: 'string'}]
        },
        getDepartamentos: {
            parameters: []
        },
        getDepartamentoById: {
            // id
            parameters: [{type: 'string'}]
        },
        getDepartamentosByNome: {
            // nome
            parameters: [{type: 'string'}]
        },
        removeDepartamento: {
            // id
            parameters: [{type: 'string'}]
        },
        addProfessor: {
            // nome, departamento
            parameters: [{type: 'string'}, {type: 'string'}]
        },
        editProfessor: {
            // id, nome, departamento
            parameters: [{type: 'string'}, {type: 'string'}, {type: 'string'}]
        },
        getProfessores: {
            parameters: []
        },
        getProfessoresByDepartamento: {
            // departamento
            parameters: [{type: 'string'}]
        },
        getProfessorById: {
            // id
            parameters: [{type: 'string'}]
        },
        getProfessoresByNome: {
            // nome
            parameters: [{type: 'string'}]
        },
        removeProfessor: {
            // id
            parameters: [{type: 'string'}]
        },
        addCurso: {
            // nome, departamento, pos
            parameters: [{type: 'string'}, {type: 'string'}, {type: 'boolean'}]
        },
        editCurso: {
            // id, nome, departamento, pos
            parameters: [{type: 'string'}, {type: 'string'},
                         {type: 'string'}, {type: 'boolean'}]
        },
        getCursos: {
            parameters: []
        },
        getCursosByDepartamento: {
            // departamento
            parameters: [{type: 'string'}]
        },
        getCursoById: {
            // id
            parameters: [{type: 'string'}]
        },
        getCursosByNome: {
            // nome
            parameters: [{type: 'string'}]
        },
        removeCurso: {
            // id
            parameters: [{type: 'string'}]
        },
        addAluno: {
            // nome, curso
            parameters: [{type: 'string'}, {type: 'string'}]
        },
        editAluno: {
            // id, nome, curso
            parameters: [{type: 'string'}, {type: 'string'}, {type: 'string'}]
        },
        getAlunos: {
            parameters: []
        },
        getAlunosByCurso: {
            // curso
            parameters: [{type: 'string'}]
        },
        getAlunoById: {
            // id
            parameters: [{type: 'string'}]
        },
        getAlunosByNome: {
            // nome
            parameters: [{type: 'string'}]
        },
        removeAluno: {
            // id
            parameters: [{type: 'string'}]
        },
        addDisciplina: {
            // nome, créditos fornecidos, créditos necessários,
            // curso, professor, obrigatoria
            parameters: [{type: 'string'}, {type: 'number'}, {type: 'number'},
                         {type: 'string'}, {type: 'string'}, {type: 'boolean'}]
        },
        editDisciplina: {
            // id, nome,
            // créditos fornecidos, créditos necessários,
            // curso, professor, obrigatoria
            parameters: [{type: 'string'}, {type: 'string'},
                         {type: 'number'}, {type: 'number'},
                         {type: 'string'}, {type: 'string'}, {type: 'boolean'}]
        },
        getDisciplinas: {
            parameters: []
        },
        getDisciplinasByCurso: {
            // curso
            parameters: [{type: 'string'}]
        },
        getDisciplinaById: {
            // id
            parameters: [{type: 'string'}]
        },
        getDisciplinasByNome: {
            // nome
            parameters: [{type: 'string'}]
        },
        removeDisciplina: {
            parameters: []
        },
        matricularAluno: {
            // aluno, disciplina
            parameters: [{type: 'string'}, {type: 'string'}]
        }
    }
});

function onErrback(data)
{
    alert('O programador desse produto não foi capaz de suportar o caos\n'
        + 'E assim um erro ocorreu, desculpe-me:\n'
        + data);
}
